function b = custom_fir1(N, Wn, window)
    if mod(N, 2) == 0
        error('滤波器阶数必须为奇数');
    end
    
    % 半径范围
    M = (N - 1) / 2;
    
    % 理想低通滤波器冲激响应（sinc函数）
    h = Wn * sinc(Wn * (-M:M));
    
    b = h .* window';
    
    % 归一化滤波器系数，使其单位增益
    b = b / sum(b);
end
